package com.huhao.concurrency.example.singleton;

import com.huhao.concurrency.annoations.ThreadSafe;

/**
 * 饿汉模式
 * 单例的实例在类装载时候进行创建
 * <p>
 * but：构造器中如果处理的东西比较多，则该类会加载比较慢，
 * 产生性能问题
 */
@ThreadSafe
public class SingletonExample6 {
    /**
     * 单例构造器
     * 必须私有，不能外部调用
     */
    private SingletonExample6() {
    }

    //单例对象
    private static SingletonExample6 instance = null;

    static {
        instance = new SingletonExample6();
    }

    //静态的工程方法
    public static SingletonExample6 getInstance() {
        return instance;
    }

    /**
     * 静态代码块位置不同，结果也会不同
     * 是按顺序执行的
     *
     * @param args
     */
    public static void main(String[] args) {
        /**
         *     static {
         *         instance = new SingletonExample6();
         *     }
         *
         *    //单例对象
         *     private static SingletonExample6 instance = null;
         */
        System.out.println(getInstance());//null
        System.out.println(getInstance());//null

        /**
         *    //单例对象
         *     private static SingletonExample6 instance = null;
         *
         *     static {
         *         instance = new SingletonExample6();
         *     }
         */
        System.out.println(getInstance());//com.huhao.concurrency.example.singleton.SingletonExample6@3a71f4dd
        System.out.println(getInstance());//com.huhao.concurrency.example.singleton.SingletonExample6@3a71f4dd
    }
}
